package inet.app.model.util;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Hashtable;
import java.util.Date;

/**
 * Astronomical algorithms from the book "Astronomical Algorithms" by Jean
 * Meeus, 1998
 * <p>
 * 
 * Permission to use, copy, modify, and redistribute this software and its
 * documentation for personal, non-commercial use is hereby granted provided
 * that this copyright notice and appropriate documentation appears in all
 * copies. This software may not be distributed for fee or as part of
 * commercial, "shareware," and/or not-for-profit endevors including, but not
 * limited to, CD-ROM collections, online databases, and subscription services
 * without specific license.
 * <p>
 * 
 */
public class LuniSolarCalendar {
	public static double LOCAL_TIMEZONE = 7.0; // Local time zone counted as
	// hours ahead of GMT

	public static final double PI = Math.PI;
	public static final String[] CAN = { "Giáp", "Ất", "Bính", "Đinh", "Mậu",
			"Kỷ", "Canh", "Tân", "Nhâm", "Quý" };
	public static final String[] CHI = { "Tý", "Sửu", "Dần", "Mão", "Thìn",
			"Ty.", "Ngọ", "Mùi", "Thân", "Dậu", "Tuất", "Hợi" };

	static Hashtable yearCache = new Hashtable();

	/**
	 * Neu leap = 0: Can-Chi cua ngay dd thang mm nam yy am lich; Neu leap = 1:
	 * Can-Chi cua ngay dd thang mm nhuan nam yy am lich
	 * 
	 * @param dd
	 * @param mm
	 * @param yy
	 * @param leap
	 * @return
	 */
	public static String[] CanChi(int dd, int mm, int yy, int leap) {
		int[] solar = Lunar2Solar(dd, mm, yy, leap);
		double jd = UniversalToJD(solar[0], solar[1], solar[2]);
		String canNgay = CAN[MOD(INT(jd + 9.5), 10) % 10];
		String chiNgay = CHI[MOD(INT(jd + 1.5), 12) % 12];
		String canThang = CAN[MOD((yy * 12 + mm + 3), 10) % 10];
		String chiThang = CHI[MOD((mm + 1), 12) % 12];
		String nhuan = leap == 1 ? " (nhuan)" : "";
		String canNam = CAN[MOD(yy + 6, 10) % 10];
		String chiNam = CHI[MOD(yy + 8, 12) % 12];
		return new String[] { canNgay, chiNgay, canThang, chiThang, canNam,
				chiNam };
	}

	public static int getLastDayOfMonth(int month, int year) {
		int lastDay = 0;
		if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
				|| month == 10 || month == 12) {
			lastDay = 31;
		} else if (month == 4 || month == 6 || month == 9 || month == 11)
			lastDay = 30;
		else if (month == 2) {
			if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
				lastDay = 29;
			} else
				lastDay = 28;
		}
		return lastDay;
	}

	public static boolean ngayHoangDao(int thangAL, String ngayChi) {
		boolean ngayHD = false;
		if (thangAL == 1 || thangAL == 7) {
			if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty.")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				ngayHD = true;
		} else if (thangAL == 2 || thangAL == 8) {
			if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				ngayHD = true;
		} else if (thangAL == 3 || thangAL == 9) {
			if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty.")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				ngayHD = true;
		} else if (thangAL == 4 || thangAL == 10) {
			if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				ngayHD = true;
		} else if (thangAL == 5 || thangAL == 11) {
			if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				ngayHD = true;
		} else if (thangAL == 6 || thangAL == 12) {
			if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				ngayHD = true;
		}
		return ngayHD;
	}

	public static boolean ngayHacDao(int thangAL, String ngayChi) {
		boolean ngayHD = false;
		if (thangAL == 1 || thangAL == 7) {
			if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				ngayHD = true;
		} else if (thangAL == 2 || thangAL == 8) {
			if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty.")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				ngayHD = true;
		} else if (thangAL == 3 || thangAL == 9) {
			if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				ngayHD = true;
		} else if (thangAL == 4 || thangAL == 10) {
			if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty.")
					|| ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				ngayHD = true;
		} else if (thangAL == 5 || thangAL == 11) {
			if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan")
					|| ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui")
					|| ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				ngayHD = true;
		} else if (thangAL == 6 || thangAL == 12) {
			if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin")
					|| ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu")
					|| ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau")
					|| ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				ngayHD = true;
		}
		return ngayHD;
	}

	public static String[] xoaPT(String[] a, String[] b) {
		int n = b.length;
		// xóa phần tử trùng trong mảng b
		for (int i = 0; i < n - 1; ++i) {
			for (int j = i + 1; j < n; ++j)
				if (b[j] != null && b[i] != null) {
					if (b[j].equals(b[i])) {
						for (int k = j; k < n - 1; ++k)
							b[k] = b[k + 1];
						b[n - 1] = null;
						n--;
						j--;
					}
				}
		}
		// sắp xếp mảng b
		n = b.length;
		String test = "";
		for (int i = 0; i < b.length - 1; i++) {
			for (int j = i + 1; j < b.length; j++) {
				if (b[j] != null && b[i] != null) {
					if (Integer.parseInt(b[i]) > Integer.parseInt(b[j])) {
						test = b[i];
						b[i] = b[j];
						b[j] = test;
					}
				}
			}
		}

		// ktra mảng b & a, xóa phần tử trùng trong 2 mảng
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < b.length; j++) {
				if (a[i].equals(b[j])) {
					for (int k = j; k < n - 1; ++k)
						b[k] = b[k + 1];
					b[n - 1] = null;
					n--;
					j--;
				}
			}
		}
		return b;
	}

	public static int[][] getLunarYear(int yy) {
		int[][] ret = (int[][]) yearCache.get(new Integer(yy));
		if (ret == null) {
			ret = LunarYear(yy);
			if (yearCache.size() > 10) {
				yearCache.clear();
			}
			yearCache.put(new Integer(yy), ret);
		}
		return ret;
	}

	static void initLeapYear(int[][] ret) {
		double[] sunLongitudes = new double[ret.length];
		for (int i = 0; i < ret.length; i++) {
			int[] a = ret[i];
			double jdAtMonthBegin = LocalToJD(a[0], a[1], a[2]);
			sunLongitudes[i] = SunLongitude(jdAtMonthBegin);
		}
		boolean found = false;
		for (int i = 0; i < ret.length; i++) {
			if (found) {
				ret[i][3] = MOD(i + 10, 12);
				continue;
			}
			double sl1 = sunLongitudes[i];
			double sl2 = sunLongitudes[i + 1];
			boolean hasMajorTerm = Math.floor(sl1 / PI * 6) != Math.floor(sl2
					/ PI * 6);
			if (!hasMajorTerm) {
				found = true;
				ret[i][4] = 1;
				ret[i][3] = MOD(i + 10, 12);
			}
		}
	}

	public static int INT(double d) {
		return (int) Math.floor(d);
	}

	public static int[] LocalFromJD(double JD) {
		return UniversalFromJD(JD + LOCAL_TIMEZONE / 24.0);
	}

	public static double LocalToJD(int D, int M, int Y) {
		return UniversalToJD(D, M, Y) - LOCAL_TIMEZONE / 24.0;
	}

	public static int[] Lunar2Solar(int D, int M, int Y, int leap) {
		int yy = Y;
		if (M >= 11) {
			yy = Y + 1;
		}
		int[][] lunarYear = getLunarYear(yy);
		int[] lunarMonth = null;
		for (int i = 0; i < lunarYear.length; i++) {
			int[] lm = lunarYear[i];
			//System.out.println("lm[4]:"+lm[4]);
			if (lm[3] == M && lm[4] == leap) {
				//System.out.println("-----"+lm[1]);
				lunarMonth = lm;
				break;
			}
		}
		if (lunarMonth != null) {
			double jd = LocalToJD(lunarMonth[0], lunarMonth[1], lunarMonth[2]);
			return LocalFromJD(jd + D - 1);
		} else {
			throw new RuntimeException("Incorrect input!");
		}
	}

	public static int[] LunarMonth11(int Y) {
		double off = LocalToJD(31, 12, Y) - 2415021.076998695;
		int k = INT(off / 29.530588853);
		double jd = NewMoon(k);
		int[] ret = LocalFromJD(jd);
		double sunLong = SunLongitude(LocalToJD(ret[0], ret[1], ret[2])); // sun
		// longitude
		// at
		// local
		// midnight
		if (sunLong > 3 * PI / 2) {
			jd = NewMoon(k - 1);
		}
		return LocalFromJD(jd);
	}

	public static int[][] LunarYear(int Y) {
		int[][] ret = null;
		int[] month11A = LunarMonth11(Y - 1);
		double jdMonth11A = LocalToJD(month11A[0], month11A[1], month11A[2]);
		int k = (int) Math
				.floor(0.5 + (jdMonth11A - 2415021.076998695) / 29.530588853);
		int[] month11B = LunarMonth11(Y);
		double off = LocalToJD(month11B[0], month11B[1], month11B[2])
				- jdMonth11A;
		boolean leap = off > 365.0;
		if (!leap) {
			ret = new int[13][5];
		} else {
			ret = new int[14][5];
		}
		ret[0] = new int[] { month11A[0], month11A[1], month11A[2], 0, 0 };
		ret[ret.length - 1] = new int[] { month11B[0], month11B[1],
				month11B[2], 0, 0 };
		for (int i = 1; i < ret.length - 1; i++) {
			double nm = NewMoon(k + i);
			int[] a = LocalFromJD(nm);
			ret[i] = new int[] { a[0], a[1], a[2], 0, 0 };
		}
		for (int i = 0; i < ret.length; i++) {
			ret[i][3] = MOD(i + 11, 12);
		}
		if (leap) {
			initLeapYear(ret);
		}
		return ret;
	}
	
	public static double calKDMT(int day,int month,int year, int hour, int min){
		double a = (int) Math.floor((14-month)/12);
		
		double y = year + 4800 - a;		
		double m = month + 12*a - 3;
		double JDN = day + (int) Math.floor((153*m +2)/5) + 365*y + (int) Math.floor(y/4) - (int) Math.floor(y/100) + (int) Math.floor(y/400) - 32045;
		double JD = JDN + (hour - 12 - 7)/24 + min/1440 ;
		
		double T = (JD - 2451545.0) / 36525;
		
		double L0 = 280.46645 + 36000.76983*T + 0.0003032*T*T;
		double M = 357.52910 + 35999.05030*T - 0.0001559*T*T - 0.00000048*T*T*T;
		double C = (1.914600 - 0.004817*T - 0.000014*T*T) * Math.sin(M) + (0.01993 - 0.000101*T) * Math.sin(2*M) + 0.000290 * Math.sin(3*M);
		double theta = L0 + C;
		double lambda = theta - 0.00569 - 0.00478 * Math.sin(125.04 - 1934.136*T);			
		lambda = lambda - 360 * (int) Math.floor(lambda/360);
		return lambda;		
	}
	
	public static void main(String[] args) {
		//System.out.println(calKDMT(1, 1, 2008, 0, 0));
		int[] dl = null;
		
//			for(int j=1;j<=12;j++){
//				for(int k=1;k<=31;k++){
//					dl = Solar2Lunar(k, j, 2012);
//					if (dl[3]!=0){
//						System.out.println("dl[3]:"+dl[3]);						
//						System.out.println("j:"+j);
//						System.out.println("k:"+k);
//						break;						
//					}
//				}
//			}			
		
		dl = Lunar2Solar(24, 7, 2012, 0);
		
		System.out.println(dl[0]);
		System.out.println(dl[1]);
		System.out.println(dl[2]);
//		
//		System.out.println("-------------");
//		
//		int am[] = Solar2Lunar(19, 12, 1990);
//		System.out.println(am[0]);
//		System.out.println(am[1]);
//		System.out.println(am[2]);
//		System.out.println(am[3]);
		
	}

	public static String[] mausac(String mang) {
		String[] mau = null;
		String kim = "trắng";
		String moc = "xanh";
		String thuy = "đen";
		String hoa = "đỏ";
		String tho = "vàng";
		if (mang.equalsIgnoreCase("Kim")) {
			mau = new String[] { tho + ", " + kim, hoa };
		} else if (mang.equalsIgnoreCase("Mộc") || mang.equalsIgnoreCase("Moc")) {
			mau = new String[] { thuy + ", " + moc, kim };
		} else if (mang.equalsIgnoreCase("Thủy")
				|| mang.equalsIgnoreCase("Thuy")) {
			mau = new String[] { kim + ", " + thuy, tho };
		} else if (mang.equalsIgnoreCase("Hỏa") || mang.equalsIgnoreCase("Hoa")) {
			mau = new String[] { moc + ", " + hoa, thuy };
		} else if (mang.equalsIgnoreCase("Thổ") || mang.equalsIgnoreCase("Tho")) {
			mau = new String[] { hoa + ", " + tho, moc };
		}
		return mau;
	}
	
	
	public static int getDayDistance(java.sql.Timestamp tsFrom, java.sql.Timestamp tsTo) {
        if (tsFrom == null || tsTo == null )
            return 0;
        java.util.Calendar calendar = java.util.Calendar.getInstance();
        calendar.setTime(new java.util.Date(tsFrom.getTime()));
        int iDayFromOfYear = calendar.get(calendar.DAY_OF_YEAR);
        
        calendar.setTime(new java.util.Date(tsTo.getTime()));
        int iDayToOfYear = calendar.get(calendar.DAY_OF_YEAR);
        return (iDayToOfYear - iDayFromOfYear);
    }
	
	public static int getDayDistanceWithCurrentDay(String date) {
        Timestamp ts = DateProc.String2Timestamp(date);
        if (ts == null)
            return 0;
        java.util.Calendar calendar = java.util.Calendar.getInstance();
        int iDayCurrentOfYear = calendar.get(calendar.DAY_OF_YEAR);
        calendar.setTime(new java.util.Date(ts.getTime()));
        int iDayOfYear = calendar.get(calendar.DAY_OF_YEAR);
        return (iDayOfYear - iDayCurrentOfYear);
    }

	public static int daysBetween(Calendar  d1, Calendar d2) {
		Calendar date = (Calendar) d1.clone();
        int daysBetween = 0;
        while (date.before(d2)) {
            date.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }
        return daysBetween;
	}

	public static int MOD(int x, int y) {
		int z = x - (int) (y * Math.floor(((double) x / y)));
		if (z == 0) {
			z = y;
		}
		return z;
	}

	/**
	 * Julian day number of the kth new moon after (or before) the New Moon of
	 * 1900-01-01 13:51 GMT. Accuracy: 2 minutes Algorithm from: Astronomical
	 * Algorithms, by Jean Meeus, 1998
	 * 
	 * @param k
	 * @return
	 */

	public static double NewMoon(int k) {
		double T = k / 1236.85; // Time in Julian centuries from 1900 January
		// 0.5
		double T2 = T * T;
		double T3 = T2 * T;
		double dr = PI / 180;
		double Jd1 = 2415020.75933 + 29.53058868 * k + 0.0001178 * T2
				- 0.000000155 * T3;
		Jd1 = Jd1 + 0.00033
				* Math.sin((166.56 + 132.87 * T - 0.009173 * T2) * dr); // Mean
		// new
		// moon
		double M = 359.2242 + 29.10535608 * k - 0.0000333 * T2 - 0.00000347
				* T3; // Sun's mean anomaly
		double Mpr = 306.0253 + 385.81691806 * k + 0.0107306 * T2 + 0.00001236
				* T3; // Moon's mean anomaly
		double F = 21.2964 + 390.67050646 * k - 0.0016528 * T2 - 0.00000239
				* T3; // Moon's argument of latitude
		double C1 = (0.1734 - 0.000393 * T) * Math.sin(M * dr) + 0.0021
				* Math.sin(2 * dr * M);
		C1 = C1 - 0.4068 * Math.sin(Mpr * dr) + 0.0161 * Math.sin(dr * 2 * Mpr);
		C1 = C1 - 0.0004 * Math.sin(dr * 3 * Mpr);
		C1 = C1 + 0.0104 * Math.sin(dr * 2 * F) - 0.0051
				* Math.sin(dr * (M + Mpr));
		C1 = C1 - 0.0074 * Math.sin(dr * (M - Mpr)) + 0.0004
				* Math.sin(dr * (2 * F + M));
		C1 = C1 - 0.0004 * Math.sin(dr * (2 * F - M)) - 0.0006
				* Math.sin(dr * (2 * F + Mpr));
		C1 = C1 + 0.0010 * Math.sin(dr * (2 * F - Mpr)) + 0.0005
				* Math.sin(dr * (2 * Mpr + M));
		double deltat;
		if (T < -11) {
			deltat = 0.001 + 0.000839 * T + 0.0002261 * T2 - 0.00000845 * T3
					- 0.000000081 * T * T3;
		} else {
			deltat = -0.000278 + 0.000265 * T + 0.000262 * T2;
		}
		;
		double JdNew = Jd1 + C1 - deltat;
		return JdNew;
	}

	public static int[] Solar2Lunar(int D, int M, int Y) {
		int yy = Y;
		int[][] ly = getLunarYear(Y);
		int[] month11 = ly[ly.length - 1];
		double jdToday = LocalToJD(D, M, Y);
		double jdMonth11 = LocalToJD(month11[0], month11[1], month11[2]);
		if (jdToday >= jdMonth11) {
			ly = getLunarYear(Y + 1);
			yy = Y + 1;
		}
		int i = ly.length - 1;
		while (jdToday < LocalToJD(ly[i][0], ly[i][1], ly[i][2])) {
			i--;
		}
		int dd = (int) (jdToday - LocalToJD(ly[i][0], ly[i][1], ly[i][2])) + 1;
		int mm = ly[i][3];
		if (mm >= 11) {
			yy--;
		}
		return new int[] { dd, mm, yy, ly[i][4] };
	}

	/**
	 * Solar longitude in radians, accuracy of 0.01 degree Algorithm from:
	 * Astronomical Algorithms, by Jean Meeus, 1998
	 * 
	 * @param jdn
	 * @return
	 */
	public static double SunLongitude(double jdn) {
		double T = (jdn - 2451545.0) / 36525; // Time in Julian centuries from
		// 2000-01-01 12:00:00 GMT
		double T2 = T * T;
		double dr = PI / 180; // degree to radian
		double M = 357.52910 + 35999.05030 * T - 0.0001559 * T2 - 0.00000048
				* T * T2; // mean anomaly, degree
		double L0 = 280.46645 + 36000.76983 * T + 0.0003032 * T2; // mean
		// longitude,
		// degree
		double DL = (1.914600 - 0.004817 * T - 0.000014 * T2)
				* Math.sin(dr * M);
		DL = DL + (0.019993 - 0.000101 * T) * Math.sin(dr * 2 * M) + 0.000290
				* Math.sin(dr * 3 * M);
		double L = L0 + DL; // true longitude, degree
		L = L * dr;
		L = L - PI * 2 * (INT(L / (PI * 2))); // Normalize to (0, 2*PI)
		return L;
	}

	/**
	 * Meeus's algorithm for converting Julian date number to dd/mm/yyyy of
	 * Julian or Gregorian calendar (at GMT). It works for any positive Julian
	 * date;
	 * 
	 * @param JD
	 * @return Integer array [day, month, year]
	 */
	public static int[] UniversalFromJD(double JD) {
		int Z, A, alpha, B, C, D, E, dd, mm, yyyy;
		double F;
		Z = INT(JD + 0.5);
		F = (JD + 0.5) - Z;
		if (Z < 2299161) {
			A = Z;
		} else {
			alpha = INT((Z - 1867216.25) / 36524.25);
			A = Z + 1 + alpha - INT(alpha / 4);
		}
		B = A + 1524;
		C = INT((B - 122.1) / 365.25);
		D = INT(365.25 * C);
		E = INT((B - D) / 30.6001);
		dd = INT(B - D - INT(30.6001 * E) + F);
		if (E < 14) {
			mm = E - 1;
		} else {
			mm = E - 13;
		}
		if (mm < 3) {
			yyyy = C - 4715;
		} else {
			yyyy = C - 4716;
		}
		return new int[] { dd, mm, yyyy };
	}

	/**
	 * Convert D/M/Y 00:00 GMT of Julian or Gregorian calendar to Julian date.
	 * Algorithm found at
	 * http://scienceworld.wolfram.com/astronomy/JulianDate.html
	 * 
	 * @param D
	 * @param M
	 * @param Y
	 * @return
	 */
	public static double UniversalToJD(int D, int M, int Y) {
		double JD;
		if (Y > 1582 || (Y == 1582 && M > 10)
				|| (Y == 1582 && M == 10 && D > 14)) {
			JD = 367 * Y - INT(7 * (Y + INT((M + 9) / 12)) / 4)
					- INT(3 * (INT((Y + (M - 9) / 7) / 100) + 1) / 4)
					+ INT(275 * M / 9) + D + 1721028.5;
		} else {
			JD = 367 * Y - INT(7 * (Y + 5001 + INT((M - 9) / 7)) / 4)
					+ INT(275 * M / 9) + D + 1729776.5;
		}
		return JD;
	}

	public static String getCanChiByYear(int year) {
		int x = MOD(year + 6, 10) % 10;
		int y = MOD(year + 8, 12) % 12;
		String chi = "";
		String can = "";
		if (y == 0)
			chi = "Tý";
		else if (y == 1)
			chi = "Sửu";
		else if (y == 2)
			chi = "Dần";
		else if (y == 3)
			chi = "Mão";
		else if (y == 4)
			chi = "Thìn";
		else if (y == 5)
			chi = "Ty.";
		else if (y == 6)
			chi = "Ngọ";
		else if (y == 7)
			chi = "Mùi";
		else if (y == 8)
			chi = "Thân";
		else if (y == 9)
			chi = "Dậu";
		else if (y == 10)
			chi = "Tuất";
		else if (y == 11)
			chi = "Hợi";

		if (x == 0)
			can = "Giáp";
		else if (x == 1)
			can = "Ất";
		else if (x == 2)
			can = "Bính";
		else if (x == 3)
			can = "Đinh";
		else if (x == 4)
			can = "Mậu";
		else if (x == 5)
			can = "Kỷ";
		else if (x == 6)
			can = "Canh";
		else if (x == 7)
			can = "Tân";
		else if (x == 8)
			can = "Nhâm";
		else if (x == 9)
			can = "Quý";
		return can + " " + chi;
	}

	public static String ngayLeAL(int ngay, int thang) {
		String ngayLe = "";
		if (thang == 1) {
			if (ngay == 1)
				ngayLe = "Tết Nguyên Đán";
			else if (ngay == 2)
				ngayLe = "Tết Nguyên Đán";
			else if (ngay == 3)
				ngayLe = "Tết Nguyên Đán";
			else if (ngay == 15)
				ngayLe = "Tết Nguyên tiêu";
		} else if (thang == 3) {
			if (ngay == 3)
				ngayLe = "Tết Hàn thực";
			else if (ngay == 10)
				ngayLe = "Giỗ tổ Hùng Vương";
		} else if (thang == 4 && ngay == 15)
			ngayLe = "Lễ Phật Đản";
		else if (thang == 5 && ngay == 5)
			ngayLe = "Tết Đoan ngọ";
		else if (thang == 7 && ngay == 15)
			ngayLe = "Lễ Vu lan";
		else if (thang == 8 && ngay == 15)
			ngayLe = "Tết Trung thu";
		else if (thang == 10 && ngay == 10)
			ngayLe = "Tết Trùng thập";
		else if (thang == 12 && ngay == 23)
			ngayLe = "Tết ông Công ông Táo";
		return ngayLe;
	}

	public static String ngayLeDL(int ngay, int thang) {
		String ngayLe = "";
		if (thang == 1) {
			if (ngay == 1)
				ngayLe = "Tết Dương lịch";
			else if (ngay == 9)
				ngayLe = "Ngày Sinh viên - Học sinh Việt Nam";
			else if (ngay == 11)
				ngayLe = "Ngày Tết trồng cây";
		} else if (thang == 2) {
			if (ngay == 3)
				ngayLe = "Ngày thành lập Đảng Cộng sản Việt Nam";
			else if (ngay == 14)
				ngayLe = "Ngày lễ tình nhân Valentine";
			else if (ngay == 27)
				ngayLe = "Ngày Thầy thuốc Việt Nam";
			else if (ngay == 9)
				ngayLe = "Ngày Sinh viên - Học sinh Việt Nam";
		} else if (thang == 3) {
			if (ngay == 8)
				ngayLe = "Quốc tế Phụ nữ";
			else if (ngay == 26)
				ngayLe = "Thành lập Đoàn Thanh niên cộng sản Hồ Chí Minh";
			else if (ngay == 27)
				ngayLe = "Ngày Thể Thao Việt Nam";
		} else if (thang == 4) {
			if (ngay == 1)
				ngayLe = "Ngày cá tháng Tư";
			else if (ngay == 30)
				ngayLe = "Ngày Giải phóng Miền Nam";
		} else if (thang == 5) {
			if (ngay == 1)
				ngayLe = "Ngày Quốc tế Lao Động";
			else if (ngay == 7)
				ngayLe = "Chiến thắng Điện Biên Phủ";
			else if (ngay == 15)
				ngayLe = "Ngày thành lập Đội thiếu niên Tiền phong Hồ Chí Minh";
			else if (ngay == 19)
				ngayLe = "Ngày sinh của Chủ tịch Hồ Chí Minh";
		} else if (thang == 6) {
			if (ngay == 1)
				ngayLe = "Ngày Quốc tế Thiếu nhi";
			else if (ngay == 5)
				ngayLe = "Ngày Môi trường thế giới";
			else if (ngay == 28)
				ngayLe = "Ngày Gia đình Việt Nam";
		} else if (thang == 7) {
			if (ngay == 11)
				ngayLe = "Ngày Dân số Thế Giới";
			else if (ngay == 27)
				ngayLe = "Ngày Thương binh liệt sĩ";
		} else if (thang == 8 && ngay == 19)
			ngayLe = "Ngày Cách mạng tháng Tám thành công";
		else if (thang == 9 && ngay == 2)
			ngayLe = "Ngày Quốc Khánh nước Việt Nam";
		else if (thang == 10) {
			if (ngay == 1)
				ngayLe = "Quốc tế Người cao tuổi";
			else if (ngay == 10)
				ngayLe = "Ngày Giải phóng Thủ đô Hà Nội";
			else if (ngay == 13)
				ngayLe = "Ngày Doanh nhân Việt Nam";
			else if (ngay == 20)
				ngayLe = "Ngày thành lập Hội liên hiệp Phụ nữ Việt Nam";
		} else if (thang == 11 && ngay == 20)
			ngayLe = "Ngày Nhà giáo Việt Nam";
		else if (thang == 12) {
			if (ngay == 1)
				ngayLe = "Ngày Quốc tế phòng chống bệnh AIDS";
			else if (ngay == 3)
				ngayLe = "Ngày Quốc tế người khuyết tật";
			else if (ngay == 10)
				ngayLe = "Ngày Quốc tế quyền con người";
			else if (ngay == 22)
				ngayLe = "Ngày thành lập Quân đội Nhân dân Việt Nam";
			else if (ngay == 25)
				ngayLe = "Lễ Giáng sinh";
			else if (ngay == 26)
				ngayLe = "Ngày Dân số Việt Nam";
		}
		return ngayLe;
	}
	
	public static String truc12(int thangAL, String ngayChi) {
		String truc = null;
		
		if (thangAL == 1) {
			if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Bế";
		} else if (thangAL == 2) {
			if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Bế";
		} else if (thangAL == 3) {
			if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Bế";
		} else if (thangAL == 4) {
			if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Bế";
		} else if (thangAL == 5) {
			if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Bế";
		} else if (thangAL == 6) {
			if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Bế";
		} else if (thangAL == 7) {
			if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Bế";
		} else if (thangAL == 8) {
			if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Bế";
		} else if (thangAL == 9) {
			if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Bế";
		} else if (thangAL == 10) {
			if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Bế";
		} else if (thangAL == 11) {
			if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Bế";
		} else if (thangAL == 12) {
			if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				truc = "Kiến";
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				truc = "Trừ";
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				truc = "Mãn";
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				truc = "Bình";
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				truc = "Định";
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				truc = "Chấp";
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				truc = "Phá";
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				truc = "Nguy";
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				truc = "Thành";
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				truc = "Thu";
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				truc = "Khai";
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				truc = "Bế";
		}
		
		return truc;	
	}

	public static String[] tinhChat12Truc(int thangAL, String ngayChi) {
		String[] tinhChat = null;
		String[] kien = new String[] { "Xuất hành",
				"An táng - Cầu tự - Hôn thú, giá thú - Động thổ" };
		String[] tru = new String[] { "Động thổ - Xuất hành - Tế lễ, tế tự", "" };
		String[] man = new String[] { "Tế lễ, tế tự - Cầu tài,lộc",
				"Hôn thú, giá thú" };
		String[] binh = new String[] { "Mọi việc đều tốt", "" };
		String[] dinh = new String[] {
				"Khởi tạo - Hôn thú, giá thú - Động thổ",
				"Tố tụng, Giải oan - Xuất hành" };
		String[] chap = new String[] { "Tu tạo, sửa nhà",
				"Giao dịch - Ký hợp đồng - Khai trương" };
		String[] pha = new String[] { "Phá dỡ nhà cửa, chữa bệnh",
				"An táng, cải táng - Hôn thú, giá thú" };
		String[] nguy = new String[] { "Tế lễ, tế tự",
				"Hôn thú, giá thú - Xuất hành" };
		String[] thanh = new String[] { "Xuất hành - Nhập học - Cầu tài, lộc",
				"Tố tụng, Giải oan" };
		String[] thu = new String[] { "Nhập học - Tế lễ, tế tự",
				"Động thổ - Hôn thú, giá thú" };
		String[] khai = new String[] { "Xuất hành - Động thổ. Cầu tự",
				"An táng - Tố tụng, giải oan" };
		String[] be = new String[] { "Xây tường, đào móng nhà",
				"Hôn thú, giá thú - Xuất hành. Động thổ" };

		if (thangAL == 1) {
			if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = be;
		} else if (thangAL == 2) {
			if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = be;
		} else if (thangAL == 3) {
			if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = be;
		} else if (thangAL == 4) {
			if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = be;
		} else if (thangAL == 5) {
			if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = be;
		} else if (thangAL == 6) {
			if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = be;
		} else if (thangAL == 7) {
			if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = be;
		} else if (thangAL == 8) {
			if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = be;
		} else if (thangAL == 9) {
			if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = be;
		} else if (thangAL == 10) {
			if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = be;
		} else if (thangAL == 11) {
			if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = be;
		} else if (thangAL == 12) {
			if (ngayChi.equalsIgnoreCase("Sửu")
					|| ngayChi.equalsIgnoreCase("Suu"))
				tinhChat = kien;
			else if (ngayChi.equalsIgnoreCase("Dần")
					|| ngayChi.equalsIgnoreCase("Dan"))
				tinhChat = tru;
			else if (ngayChi.equalsIgnoreCase("Mão")
					|| ngayChi.equalsIgnoreCase("Mao"))
				tinhChat = man;
			else if (ngayChi.equalsIgnoreCase("Thìn")
					|| ngayChi.equalsIgnoreCase("Thin"))
				tinhChat = binh;
			else if (ngayChi.equalsIgnoreCase("Tỵ")
					|| ngayChi.equalsIgnoreCase("Ty."))
				tinhChat = dinh;
			else if (ngayChi.equalsIgnoreCase("Ngọ")
					|| ngayChi.equalsIgnoreCase("Ngo"))
				tinhChat = chap;
			else if (ngayChi.equalsIgnoreCase("Mùi")
					|| ngayChi.equalsIgnoreCase("Mui"))
				tinhChat = pha;
			else if (ngayChi.equalsIgnoreCase("Thân")
					|| ngayChi.equalsIgnoreCase("Than"))
				tinhChat = nguy;
			else if (ngayChi.equalsIgnoreCase("Dậu")
					|| ngayChi.equalsIgnoreCase("Dau"))
				tinhChat = thanh;
			else if (ngayChi.equalsIgnoreCase("Tuất")
					|| ngayChi.equalsIgnoreCase("Tuat"))
				tinhChat = thu;
			else if (ngayChi.equalsIgnoreCase("Hợi")
					|| ngayChi.equalsIgnoreCase("Hoi"))
				tinhChat = khai;
			else if (ngayChi.equalsIgnoreCase("Tý")
					|| ngayChi.equalsIgnoreCase("Ty"))
				tinhChat = be;
		}
		return tinhChat;

	}

	public static String hourSolar2Lunar(int hour) {
		String gio = "";
		if (hour >= 1 && hour < 3) {
			gio = "Giờ Sửu";
		} else if (hour >= 3 && hour < 5) {
			gio = "Giờ Dần";
		} else if (hour >= 5 && hour < 7) {
			gio = "Giờ Mão";
		} else if (hour >= 7 && hour < 9) {
			gio = "Giờ Thìn";
		} else if (hour >= 9 && hour < 11) {
			gio = "Giờ Tỵ";
		} else if (hour >= 11 && hour < 13) {
			gio = "Giờ Ngọ";
		} else if (hour >= 13 && hour < 15) {
			gio = "Giờ Mùi";
		} else if (hour >= 15 && hour < 17) {
			gio = "Giờ Thân";
		} else if (hour >= 17 && hour < 19) {
			gio = "Giờ Dậu";
		} else if (hour >= 19 && hour < 21) {
			gio = "Giờ Tuất";
		} else if (hour >= 21 && hour < 23) {
			gio = "Giờ Hợi";
		} else {
			gio = "Giờ Tý";
		}
		return gio;
	}

	public static String getThu(int d, int m, int y) {
		int X = MOD((int) (UniversalToJD(d, m, y) + 2.5), 7);
		String thu = "";
		if (X == 1)
			thu = "Chủ Nhật";
		if (X == 2)
			thu = "Thứ Hai";
		if (X == 3)
			thu = "Thứ Ba";
		if (X == 4)
			thu = "Thứ Tư";
		if (X == 5)
			thu = "Thứ Năm";
		if (X == 6)
			thu = "Thứ Sáu";
		if (X == 7)
			thu = "Thứ Bảy";
		return thu;
	}
}
